﻿using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using Wedn.DAL;
using Wedn.Model.Data;

namespace Wedn.BLL.Data
{
    /// <summary>
    /// 链接管理类(初步审核通过)
    /// 抽象类不允许被实例化
    /// </summary>
    public abstract class LinksManager
    {
        #region SelectNav
        ///// <summary>
        ///// 取网站导航链接地址信息
        ///// </summary>
        ///// <returns>包涵网站所有可用Nav的数据表</returns>
        //public static DataTable SelectNav()
        //{
        //    return LinksDAO.SelectByUse("nav",10);
        //}
        #endregion

        #region SelectFootNav
        ///// <summary>
        ///// 取网站footer区域导航链接地址信息
        ///// </summary>
        ///// <returns>包涵网站所有可用footer-link的数据表</returns>
        //public static string SelectFootNav()
        //{
        //    DataTable table = LinksDAO.SelectByUse("foot"); ;
        //    StringBuilder sbd = new StringBuilder();
        //    for (int i = 0; i < table.Rows.Count; i++)
        //    {
        //        sbd.Append(string.Format("<a href=\"{0}\">{1}</a>", (table.Rows[i])["link_url"], (table.Rows[i])["link_name"]));
        //        if (i < table.Rows.Count - 1)
        //        {
        //            sbd.Append("<b>|</b>");
        //        }
        //    }
        //    return sbd.ToString();
        //}
        #endregion

        #region 增加链接
        /// <summary>
        /// 向链接表中插入一行数据, 返回是否执行成功
        /// </summary>
        /// <param name="link">要插入的对象</param>
        /// <returns>是否执行成功</returns>
        public static bool Insert(Link link)
        {
            return LinksDAO.Insert(link) > 0 ? true : false;
        }
        #endregion

        #region 删除链接

        #region 删除一条数据
        /// <summary>
        /// 根据id删除对应的一条选项记录, 返回是否执行成功
        /// </summary>
        /// <param name="linkid">要删除记录的ID</param>
        /// <returns>是否执行成功</returns>
        public static bool Delete(int linkid)
        {
            return LinksDAO.Delete(linkid) > 0 ? true : false;
        }
        #endregion

        #region 删除多条数据
        /// <summary>
        /// 根据id数组删除对应的多条选项记录, 返回是否执行成功
        /// </summary>
        /// <param name="linkids">要删除记录的ID数组</param>
        /// <returns>是否执行成功</returns>
        public static bool Delete(int[] linkids)
        {
            return LinksDAO.Delete(linkids) == linkids.Length ? true : false;
        }
        #endregion

        #endregion

        #region 更新链接
        /// <summary>
        /// 更新一个链接对象, 返回是否执行成功
        /// </summary>
        /// <param name="link">要更新的对象</param>
        /// <returns>是否执行成功</returns>
        public static bool Update(Link link)
        {
            return LinksDAO.Update(link) > 0 ? true : false;
        }
        #endregion

        #region 选取链接

        #region 获取表中主键最大值
        /// <summary>
        /// 获取表中主键最大值
        /// </summary>
        /// <returns>主键最大值</returns>
        public static int GetMaxId()
        {
            return LinksDAO.GetMaxId();
        }
        #endregion

        #region 选取全部链接
        /// <summary>
        /// 取出当前链接表中的所有链接信息
        /// </summary>
        /// <returns>包涵所有链接信息的数据表</returns>
        public static List<Link> GetLinks()
        {
            return LinksDAO.SelectLinks();
        }
        #endregion

        #region 根据链接类型选取链接
        /// <summary>
        /// 根据链接类型选取链接信息
        /// </summary>
        /// <param name="type">类型名称(nav;footer;blogroll...)</param>
        /// <returns>包涵指定类型所有链接信息的数据表</returns>
        public static List<Link> GetLinks(string type)
        {
            return LinksDAO.SelectLinks(type);
        }
        #endregion

        #region 根据链接类型和是否启用选取链接
        /// <summary>
        /// 根据链接类型和是否启用选取链接信息
        /// </summary>
        /// <param name="type">类型名称(nav;footer;blogroll...)</param>
        /// <param name="visible">是否启用</param>
        /// <returns>包涵指定类型所有链接信息的数据表</returns>
        public static List<Link> GetLinks(string type, bool visible)
        {
            return LinksDAO.SelectLinks(type, visible);
        }
        #endregion

        #region 根据链接父ID选取链接
        /// <summary>
        /// 根据链接父ID选取链接信息
        /// </summary>
        /// <param name="parentId">父ID</param>
        /// <returns>包涵指定父ID所有链接信息的数据表</returns>
        public static List<Link> GetLinks(int parentId)
        {
            return LinksDAO.SelectLinks(parentId);
        }
        #endregion

        #region 根据链接父ID和是否启用选取链接
        /// <summary>
        /// 根据链接父ID和是否启用选取链接信息
        /// </summary>
        /// <param name="parentId">父ID</param>
        /// <param name="visible">是否启用</param>
        /// <returns>包涵指定父ID和是否启用所有链接信息的数据表</returns>
        public static List<Link> GetLinks(int parentId, bool visible)
        {
            return LinksDAO.SelectLinks(parentId, visible);
        }
        #endregion

        #region 根据ID选取链接对象
        /// <summary>
        /// 根据ID取出当前链接表中的链接对象
        /// </summary>
        /// <returns>链接对象</returns>
        public static Link GetLink(int linkid)
        {
            return LinksDAO.SelectLink(linkid);
        }
        #endregion

        #endregion
    }
}
